package _04Java自动装箱与拆箱;

import org.junit.Test;

/**
 * @author 董代恒
 * @version 1.0
 */
public class AutomaticPacking {
    @Test
    public void Test01(){
        /*
        通过valueOf方法创建Integer对象的时候，如果数值在[-128,127]之间，
        便返回指向IntegerCache.cache中已经存在的对象的引用；否则创建一个新的Integer对象。
        上面的代码中i1和i2的数值为100，因此会直接从cache中取已经存在的对象，所以i1和i2指向的是
        同一个对象，而i3和i4则是分别指向不同的对象。
         */
        Integer i1 = 100;
        Integer i2 = 100;
        Integer i3 = 200;
        Integer i4 = 200;
        System.out.println(i1==i2);
        System.out.println(i3==i4);


    }

    @Test
    public void Test02(){
        //浮点数存在误差，所以他们的对象并不相等
        Double i1 = 100.0;
        Double i2 = 100.0;
        Double i3 = 200.0;
        Double i4 = 200.0;
        System.out.println(i1==i2);
        System.out.println(i3==i4);
    }
}
